package stu.aistar.day02;

import java.util.Date;

public class VarInitDemo {
    public static void main(String[] args) {
        byte b = 127;

        short s = 100;//使用频率很少

        //开发中常用的整数型类型 - int,long
        //int类型可以初始化的值有哪些
        int a = 100;

        //存储一个二进制，只要0b二进制，1010对应的十进制
        //java中int类型表示的是十进制的数据
        //1010 = 1*2^3+1*2^1 = 10
        int a1 = 0b1010;
        System.out.println(a1);

        //java中使用单引号来表示一个字符
        //'a'->char类型->int类型
        //'a'对应的ascii码97
        //'A'对应的ascii码65
        //'0'对应的ascii码48
        int a2 = 'a';
        System.out.println(a2);

        //java中以0开头的代表是八进制
        //八进制转十进制032 = 3*8^1 + 2*8^0 = 26
        int a3 = 032;
        System.out.println(a3);//26

        //长整型 - long

        //int类型->long类型
        long x1 = 100;

        //推荐定义long的方式采用隐式转换
        long x2 = 200L;

        //jdk7.x提供的 - 为了增强数字的可读性而已
        long x3 = 3_14_15_926L;
        System.out.println(x3);

        Date date = new Date(3L*24*60*100*1000*1000*2000);
        System.out.println(date);

        //浮点数 - 并不是用来进行精确计算的
        //后面java.math.Decimal类解决小数的时候精度丢失的问题
        double d = 1.75;

        //推荐定义double
        double d2 = 5.67D;

        //float的精度是7或8
        //double的精度是16

        //double类型强制转换成float类型
        float f = (float) 3.14;

        //隐式转换
        float f2 = 3.14F;
        System.out.println(f2);

        //补充
        //数字进行计算的时候，都会转换成二进制进行计算
        //小数进行计算的时候，还是不可逆的
        System.out.println(2.0-1.1);//0.8999999999999999

        System.out.println(2.0F-1.1F);//0.9

        //int->float    false
        //int->double   true
        int n = 123456789;
        float ft = n;
        System.out.println(ft);//1.23456792E8

        double db = n;
        System.out.println(db);//1.23456789E8

        float f3 = 1.234567899f;
        System.out.println(f3);//1.2345679

        //定义布尔类型
        boolean flag = true;
        System.out.println(flag);

        //最特殊的是char类型
        char c = 65;
        System.out.println(c);
    }
}
